#include <iostream>
#include <string>
#include <cmath>
using namespace std;

int oNo = -1 ;        //订单数组的下标
int imp = 0 ;         //先初始化材料价格和框架加工费才能下订单！

//****************** 材料类的定义 ******************//

class Material
{
public:
	Material();                        //构造函数
	void Init(int);                    //初始化材料单价和库存
	void Detail();                     //显示各种材料库存明细
	void Create(int);                  //创建材料实例

  string getName();                  //从类外部获取材料名称
	float getPrice();                  //从类外部获取材料价格

	float getUsage(float);             //从类外部获得材料用量
	void setUsage(float);              //从类外部修改材料用量
	float getSum();                    //从类外部获得材料总量

private:
	string name;                         //材料名称
	float sum;                           //材料总量
  float usage;                         //材料用量
	float pix;                           //税率
	float price;                         //材料单价
}m[4];                                 //材料库存，在全局中存在

Material::Material():sum(0),usage(0){} //初始化构造函数

void Material::Init(int i)             //材料初始化函数
{
	float p;                             //税前单价

	switch(i)
	{
	case 0:name="金";break;
	case 1:name="银";break;
	case 2:name="铜";break;
	case 3:name="铂";break;
	default:cout<<"材料初始化失败!";break;
	}

	cout<<"请输入"<<name<<"的数量：";
	cin>>sum;
	cout<<"请输入"<<name<<"的单价：";
	cin>>p;
	cout<<"请输入税率(0-1.0 之间)：";
	cin>>pix;

	price = p*(1+pix);
	cout<<"\n";
}

void Material::Detail()                //材料库存量函数
{
	cout<<name<<" 总库存："<<sum<<"  "<<"税率: "<<pix<<"  "<<"使用："<<usage<<" "<<"剩余："<<sum-usage<<endl; 
}

void Material::Create(int i)
{
	switch(i)
	{
		case 0:name="金"; price=m[i].price; break;
	    case 1:name="银"; price=m[i].price; break;
	    case 2:name="铜"; price=m[i].price; break;
		  case 3:name="铂"; price=m[i].price; break;
	    default:cout<<"框架初始化失败!";break;
	}
}

string Material::getName()
{
	return name;
}

float Material::getPrice()
{
	return price;
}

float Material::getUsage(float f)
{
	usage=f+usage;
	return usage;
}

float Material::getSum()
{
	return sum;
}

void Material::setUsage(float f)
{
	usage=usage-f;
}

//****************** 框架类的定义 ******************//

class Frame
{
public:
	Frame();                  //构造函数
	void Init(int);           //初始化框架的加工费
  void Detail();            //显示框架加工费信息
	float Circum(int);        //周长(先输入名字，才能能根据类型计算周长)
	void Create(int);         //创建框架实例

	string getName();         //从类外部获取实例名
	float getAsum();          //从类外部获取a 的值
	float getBsum();          //从类外部获取b 的值 
	float getPrice();         //从类外部获取加工费

private:
	string name;              //框架类型的名字
  float a;                  //长度1
	float b;                  //长度2
	float price;              //框架加工费
}f[5];                        //框架对象，在全局中存在

Frame::Frame():a(0),b(0){}    //初始化构造函数

void Frame::Init(int i)       //框架信息初始化
{
	switch(i)
	{
	case 0:name="标准圆"; cout<<"输入"<<name<<"的加工费："; cin>>price; cout<<endl; break;
	case 1:name="长方形"; cout<<"输入"<<name<<"的加工费："; cin>>price; cout<<endl; break;
	case 2:name="三角形"; cout<<"输入"<<name<<"的加工费："; cin>>price; cout<<endl; break;
	case 3:name="内切正方形"; cout<<"输入"<<name<<"加工费："; cin>>price; cout<<endl; break;
	case 4:name="等边三角形"; cout<<"输入"<<name<<"加工费："; cin>>price; cout<<endl; break;
	default:cout<<"框架初始化失败!";break;
	}
}

void Frame::Detail()           //显示框架的加工费
{
	cout<<name<<"的初始加工费是："<<price<<endl;
}

float Frame::Circum(int i)     //计算框架的周长
{
	if(i==0) return 2*a*3.14;                 //标准圆
	else if(i==1) return 2*(a+b);             //长方形
  else if(i==2) return a+b+sqrt(a*a+b*b);   //三角形
	else if(i==3) return 2*a*3.14+8*a;        //内切正方形
	else return a*b/2;                        //等边三角形
}

void Frame::Create(int i)
{
	switch(i)
	{
	    case 0: name="标准圆"; price=f[i].price; cout<<"请输入"<<name<<"的半径："; cin>>a; break;
		case 1: name="长方形"; price=f[i].price; cout<<"请输入"<<name<<"的长："; cin>>a; cout<<"请输入"<<name<<"的宽："; cin>>b; break;
		case 2: name="三角形"; price=f[i].price; cout<<"输入"<<name<<"的边长："; cin>>a; cout<<"输入"<<name<<"另边长："; cin>>b; break;
		case 3: name="内切正方形"; price=f[i].price; cout<<"输入"<<name<<"的内切圆半径："; cin>>a; break;
		case 4: name="等边三角形"; price=f[i].price; cout<<"输入"<<name<<"的底："; cin>>a; cout<<"输入"<<name<<"的高："; cin>>b; break;
		default:cout<<"创建框架实例失败！"; break;
	}
}

string Frame::getName()
{
	return name;
}

float Frame::getAsum()
{
	return a;
}

float Frame::getBsum()
{
	return b;
}

float Frame::getPrice()
{
	return price;
}

//****************** 订单类的定义 ******************//

class Order
{
public:
	Order();                 //构造函数
	void Create();           //创建订单
	void Display();          //查看订单
	
	float getUsage();        //从订单外部获取订单用料
	float getPrice();        //从订单外部获取框架单价
	string getMaterial(int); //从订单外部获取订单材料
	int getSum();            //从订单外部获取框架数量
	int getM();              //获取材料参数
	int getF();              //获取框架参数 
  string getName();        //从外部获取顾客姓名

private:
	string name;        //顾客姓名
	int sum;            //框架数量
	int m;              //材料类型
	int f;              //框架类型
	float price;        //框架单价（加工费+材料费）
	float usage;        //单个用料

	Frame frame;          //每个订单实例里都有一个框架实例
  Material material;    //每个订单实例里都有一个材料实例
}o[100];                //全局订单，最大能存放100个订单

Order::Order():sum(0),price(0){}      //订单初始化

void Order::Create()                  //创建订单实例
{
	cout<<"请输入顾客的姓名：";
	cin>>name;
	cout<<"请选择框架的类型( 0=圆 1=长方形 2=三角形 3=内切正方形 4=等边三角形 )：";
  cin>>f;
	frame.Create((int)f);                                  //创建订单里的框架实例
	cout<<"请选择材料的类型( 0 = 金，1 = 银，2 = 铜，3 = 铂 )：";
	cin>>m;
	material.Create((int)m);                               //创建订单里的材料实例
	cout<<"请输入定制的个数：";
	cin>>sum;
	usage = frame.Circum(f);                               //单个用料
	price = frame.getPrice()+usage*material.getPrice();    //单价=加工费+材料费
}

void Order::Display()                                    //显示订单信息
{
	cout<<"顾客的姓名是："<<name<<endl;
	cout<<"框架的种类是："<<frame.getName()<<endl;
	
	cout<<"\n框架规格如下："<<endl<<endl;                     //输出框架的规格信息
	
	if(0==f)                                               //如果是圆     
	{
		cout<<"圆的半径是："<<frame.getAsum()<<endl;
		cout<<"圆的周长是："<<frame.Circum(f)<<endl;
	}         
	else if(1==f)                                          //如果是长方形
	{
		cout<<"长方形的长是："<<frame.getAsum()<<endl;
		cout<<"长方形的宽是："<<frame.getBsum()<<endl;
		cout<<"长方形的周长："<<frame.Circum(f)<<endl;
	}
	else if(2==f)                                         //如果是三角形
	{
		cout<<"三角形一个直角边："<<frame.getAsum()<<endl;
		cout<<"三角形另个直角边："<<frame.getBsum()<<endl;
		cout<<"三角形的周长约是："<<frame.Circum(f)<<endl<<endl;    
	}
	else if(3==f)
	{
		cout<<"内切正方形的圆半径是："<<frame.getAsum()<<endl;
		cout<<"内切正方形的周长约是："<<frame.Circum(f)<<endl<<endl;    
	}

	else if(4==f)
	{
		cout<<"等边三角形的低是："<<frame.getAsum()<<endl;
		cout<<"等边三角形的高是："<<frame.Circum(f)<<endl<<endl;    
	}

	else
	{
		cout<<"\n系统错误，请退出程序重新运行\n";
	}

	cout<<"\n框架的材料是："<<material.getName()<<endl;              //获取材料名称
	cout<<"框架的单价是："<<price<<endl;                             //框架单价
	cout<<"框架的个数是："<<sum<<endl;                               //框架个数
	cout<<"框架的总金额："<<sum*price<<endl;                         //总金额=个数*单价
}

float Order::getUsage()
{
	return usage*sum;
}

float Order::getPrice()
{
	return price;
}

int Order::getM()
{
	return m;
}

int Order::getF()
{
	return f;
}

int Order::getSum()
{
	return sum;
}

string Order::getMaterial(int i)
{
	if(i==0) return "金";
	else if(i==1) return "银";
	else if(i==2) return "铜";
    else return "铂";
}

string Order::getName()
{
	return name;
}

//******************* 仓库子系统部分 *******************//

void InitStorage()                    //仓库初始化
{
	cout<<"材料仓库初始化......"<<endl<<endl;
		
	for(int i=0;i<4;i++)
	{
		m[i].Init(i);                     // m[0] = 金 ，m[1] = 银 ， m[2] = 铜 ， m[3] = 铂金 
	}
		
	cout<<"材料仓库初始化成功！"<<endl<<endl;
	imp = imp+2;                        //先初始化材料价格才能下订单
}

void DetailStorage()                  //仓库库存明细
{
	cout<<"查看现库存明细......"<<endl<<endl;
		
	for(int i=0;i<4;i++)
	{
		m[i].Detail();
	}
	cout<<"\n";
}

int Storage()
{
	void StorageMenu();                //声明子菜单显示函数
	int input_num(int,int,int);

	int sNo = -1;
	int tmp = -1;

lop:StorageMenu();                   //子菜单
	cout<<"请输入上面的服务序号：";
	sNo = input_num(0,2,1);            //输入服务序号

	switch(sNo)
	{
		case 1:InitStorage(); break;
		case 2:DetailStorage(); break;
		case 0:tmp=sNo; break;
	}

	if(sNo==1||sNo==2 )
	{
		cout<<"输入数字 1 返回本层，输入数字 0 返回上层：";
		cin>>tmp;
		cin.ignore();                    //跳过上一个回车
		cout<<"\n";
	}
	
	if(tmp==1) 
		goto lop;	

	return tmp;
}

//******************* 车间子系统部分 *******************//

void InitWorkshop()
{
	cout<<"\n框架信息初始化......"<<endl<<endl;

	for(int i=0;i<5;i++)
	{
		f[i].Init(i);                   // f[0] = 圆 ， f[1] = 长方形 ， f[2] = 直角三角形 ， f[3] = 内切正方形 f[4] = 等边三角形
	}

	cout<<"框架信息初始化成功！"<<endl<<endl;
	imp = imp-7;                      //先初始化加工费才能下订单
}

void DetailWorkshop()
{
	cout<<"查看现库存明细......"<<endl<<endl;

    for(int i=0;i<5;i++)
	{
		f[i].Detail();
	}
	cout<<"\n";
}

int Workshop()
{
	
	void WorkshopMenu();              //声明子菜单显示函数
	int input_num(int,int,int);
	
	int wNo = -1;
	int tmp = -1;

lop:WorkshopMenu();                 //子菜单
	cout<<"请输入上面的服务序号：";
	wNo = input_num(0,2,1);           //输入服务序号

	switch(wNo)
	{
		case 1:InitWorkshop(); break;
		case 2:DetailWorkshop(); break;
		case 0:tmp=wNo; break;
	}

	if(wNo==1||wNo==2 )
	{
		cout<<"输入数字 1 返回本层，输入数字 0 返回上层：";
		cin>>tmp;
		cin.ignore();
		cout<<"\n";
	}
	
	if(tmp==1) 
		goto lop;	

	return tmp;
}

//******************* 店铺子系统部分 *******************//

void MakeOrder()                                             //创建客户订单 + 显示创建的订单
{
	if(imp==0) 
	{
		cout<<"请先初始化材料价格和加工费......"<<endl<<endl;
	}
	
	else 
	{
		cout<<"正在创建订单......"<<endl<<endl;
		if(oNo==-1)                                              //创建订单的模块
		{
			cout<<"目前没有订单，这是第一张订单！\n"<<endl;	
		}
		
		else
		{
			cout<<"即将创建第"<<oNo+2<<"张订单！\n"<<endl;
		}

		o[oNo+1].Create();
		cout<<"\n\n订单创建成功,订单详情如下："<<endl<<endl;
		o[oNo+1].Display();
		
		if(m[o[oNo+1].getM()].getUsage(o[oNo+1].getUsage()) > m[o[oNo+1].getM()].getSum())
		{
			cout<<"\n\n材料不足，无法创建定单！\n\n";
			m[o[oNo+1].getM()].setUsage(o[oNo+1].getUsage());
			goto lap;
		}                                                       //创建订单后立即响应库存
			
		cout<<"\n\n响应库存！\n\n";
		m[o[oNo+1].getM()].Detail();
			
		oNo = oNo+1;                                            //订单创建成功，订单序号自动 + 1  

        lap:cout<<"\n";
	}
}

void DetailOrder()        //为所有订单打印用料信息
{
	cout<<"查看各订单用料......"<<endl<<endl;

	if(oNo==-1)
	{
		cout<<"目前没有订单！"<<endl<<endl;
	}

	else 
		for(int i=0;i<=oNo;i++)
		{
			cout<<"第"<<i+1<<"张订单：  "<<o[i].getName()<<"   "<<o[i].getMaterial(o[i].getM())<<"   "<<o[i].getUsage()<<"   "<<f[o[i].getF()].getName()<<endl<<endl;
		}
	cout<<"\n";
}

int Shop()
{
	void ShopMenu();                    //声明子菜单显示函数
	int input_num(int,int,int);
	
	int iNo = -1;                       //店铺子流程控制
	int tmp = -1;                       //返回主流程控制

lsp:ShopMenu();                       //子菜单
	cout<<"请输入上面的服务序号：";
	iNo = input_num(0,2,1);             //输入服务序号

	switch(iNo)
	{
		case 1:MakeOrder(); break;
		case 2:DetailOrder(); break;
		case 0:tmp=iNo; break;
	}

	if(iNo==1||iNo==2 )
	{
		cout<<"输入数字 1 返回本层，输入数字 0 返回上层：";
		cin>>tmp;
		cin.ignore();
		cout<<"\n";
	}
	
	if(tmp==1) 
		goto lsp;	

	return tmp;
}

//******************** 排序系统部分 ********************//

struct OrderSwap
{
	int sNo;       //存放订单序号
	float price;   //存放框架价格
	float usage;   //存放框架用料

	struct OrderSwap *next;
};

void Insert(struct OrderSwap *head,struct OrderSwap *p,int q)
{
	struct OrderSwap *tmp;
	struct OrderSwap *pre;

	if(head->next==NULL)
	{
		head->next = p;
		p->next = NULL;
	}
	else
	{
		pre = tmp = head;
		
		switch(q)
		{
		case 1:
			while(tmp=tmp->next)
			{
				if((tmp->price) <= (p->price))
					break;	
				else
				{
					pre = tmp;
				}
			} break;

		case 2:                                     //用料排序
						while(tmp=tmp->next)
			{
				if((tmp->usage) <= (p->usage))
					break;	
				else
				{
					pre = tmp;
				}
			} break;

		default:cout<<"排序系统故障 ....."<<endl<<endl;break;

		}

		pre->next = p;
		p->next = tmp;
	}
}

void DisplayPrice(struct OrderSwap *head)
{
	struct OrderSwap *p = head;

	while(p=p->next)
	{
		cout<<"第"<<p->sNo+1<<"个订单框架的价格为："<<p->price<<endl<<endl;
	}
}

void DisplayUsage(struct OrderSwap *head)
{
	struct OrderSwap *p = head;

	while(p=p->next)
	{
		cout<<"第"<<p->sNo+1<<"个订单框架的用料为："<<p->usage<<endl<<endl;
	}
}

int Sort()
{
	int input_num(int,int,int);
	void SortMenu();
	
	int tmp = -1;                       //返回主流程控制
	int sNo = -1;                       //排序子流程控制

ltp:SortMenu();                       //排序子菜单项
	cout<<"请输入上面的服务序号：";
	sNo = input_num(0,2,1);             //输入服务序号

	struct OrderSwap *head = new OrderSwap;
	struct OrderSwap *p = head;

	head->next=NULL;

	for(int t=0;t<=oNo;t++)
	{
		p = new OrderSwap;
		p->price = o[t].getPrice();
		p->usage = o[t].getUsage()/o[t].getSum();
		p->sNo = t;

		Insert(head,p,sNo);             
	}

	switch(sNo)
	{
	case 1:
		cout<<"\n框架价格由高到低的排序....."<<endl<<endl;
		DisplayPrice(head);              //框架价格排序
		break;
	case 2:
		cout<<"\n框架用料由高到低的排序....."<<endl<<endl;
		DisplayUsage(head);              //框架用料排序
		break;
	case 0:tmp = sNo;break;
	}

	if(sNo==1||sNo==2)
	{
		cout<<"输入数字 1 返回本层，输入数字 0 返回上层：";
		cin>>tmp;
		cin.ignore();
		cout<<"\n";
	}

	if(tmp==1)
		goto ltp;	

	return tmp;
}

//******************* 程序主函数部分 *******************//

int main()
{
	
    void MainMenu();
	void WorkshopMenu();
	
	int input_num(int,int,int); 

	int serverNo;               //服务序号
	int No = -1;                //订单序号
	int temp = -1;              //保存子函数的返回值，用以控制流程  

	system("title 周大框业务管理系统");          //程序标题

lop:MainMenu();                            //主菜单
	
    cout<<"\n请输入上面的服务序号：";
	serverNo = input_num(0,4,1);             //0为域下限，3为域上限，1为域长度
	
	switch(serverNo)
	{
		case 1:temp=Storage(); break;
		case 2:temp=Workshop(); break;
		case 3:temp=Shop(); break;
		case 4:temp=Sort();break;
		case 0:exit(1);
	}

	if(temp==0) goto lop;

	return 0;
}

// ********* 整型数值输入和输入域的判断 *********  //

int input_num(int r,int s,int z)             //r为域的下限,s为域的上限,z为长度
{
  int int_input(int);                         //输入字符串纠错函数，转化为int 型
  int a,t;
  
  a=int_input(z);
  cout<<endl;
  if(a<r||a>s)                                //输入的服务序号不在预定义范围内，递归调用输入函数
  {
    cout<<"值不在域内,请输入值在"<<r<<"-"<<s<<"之间,长度为"<<z<<" 的数：";
    t=input_num(r,s,z);
  } 
  else t=a;
  return t;
}

//******字符串处理为数字串(int型)的函数,t为int 型位数******//
 
int int_input(int t)        //例如输入任意字符串,需要返回一个5位数的int值,调用方法为input_sum(5)    
{
	
  int pow(int);             //声明要调用的幂函数
  int i;	
  string str;

loop:
  getline(cin,str);
  if(str.length()>100)
  {
    cout<<"\n输入的字符长度太大,请重新输入：";
    goto loop;
  }
  else ;
  for(i=1;i<str.length();i++)
  {
    if(str[i]<0)
	{cout<<"\n不要输入中文,请重新输入：";goto loop;}
    
	else if((str[i]>0&&str[i]<32)||(str[i]>32&&str[i]<48)||str[i]>57)
	{cout<<"\n请输入"<<t<<" 位"<<"0-9的数字组合：";goto loop;}
    
	else if(str[i]==32)
    {cout<<"\n不要输入空格,请输入"<<t<<" 位"<<"0-9的数字组合：";goto loop;}
	
	else ;
  }
	
  if(str.length()!=t)
  {cout<<"\n字段长度不对,"<<"请输入"<<t<<" 位"<<"0-9的数字组合："; goto loop;}

  else ;

  int temp=0;
  for(i=0;i<t;i++){temp=temp+(str[i]-48)*pow(t-i-1);}         //ASCII码值转化为整型数值

  return temp;      //函数返回int 型的值
}

 //******以10为底的幂函数100=10*10,t=2 把字符串处理为数字串(int)时用到******//    
 
int pow(int t)                
{
	int i,temp=1;
	for(i=0;i<=t-1;i++){temp=10*temp;}
	return temp;
}

//******************* 程序界面部分 *******************//

void MainMenu()
{
  cout<<"\t\t\t※※※※※※※※※※※※※※※※※\n";
  cout<<"\t\t\t※                              ※\n";
  cout<<"\t\t\t※****业**务**管**理**系**统****※\n";
  cout<<"\t\t\t※                              ※\n"; 
  cout<<"\t\t\t※       1: 仓 库 管 理         ※\n";
  cout<<"\t\t\t※                              ※\n"; 
  cout<<"\t\t\t※       2: 车 间 管 理         ※\n";
  cout<<"\t\t\t※                              ※\n"; 
  cout<<"\t\t\t※       3: 店 铺 管 理         ※\n";
  cout<<"\t\t\t※                              ※\n";  
  cout<<"\t\t\t※       4: 排 序 系 统         ※\n";
  cout<<"\t\t\t※                              ※\n"; 
  cout<<"\t\t\t※       0: 退 出 系 统         ※\n";
  cout<<"\t\t\t※                              ※\n";
  cout<<"\t\t\t※※※※※※※※※※※※※※※※※\n";
}

void StorageMenu()
{
  cout<<"\t\t\t※※※※※※※※※※※※※※※※※\n";
  cout<<"\t\t\t※                              ※\n";
  cout<<"\t\t\t※****仓**库**管**理**系**统****※\n";
  cout<<"\t\t\t※                              ※\n"; 
  cout<<"\t\t\t※       1: 材 料 初 始 化      ※\n";
  cout<<"\t\t\t※                              ※\n"; 
  cout<<"\t\t\t※       2: 材 料 库 存 表      ※\n";
  cout<<"\t\t\t※                              ※\n";  
  cout<<"\t\t\t※       0: 返 回 上 一 层      ※\n";
  cout<<"\t\t\t※                              ※\n";
  cout<<"\t\t\t※※※※※※※※※※※※※※※※※\n";
}

void WorkshopMenu()
{
  cout<<"\t\t\t※※※※※※※※※※※※※※※※※\n";
  cout<<"\t\t\t※                              ※\n";
  cout<<"\t\t\t※****车**间**管**理**系**统****※\n";
  cout<<"\t\t\t※                              ※\n"; 
  cout<<"\t\t\t※       1: 框 架 初 始 化      ※\n";
  cout<<"\t\t\t※                              ※\n"; 
  cout<<"\t\t\t※       2: 框 架 信 息 表      ※\n";
  cout<<"\t\t\t※                              ※\n";  
  cout<<"\t\t\t※       0: 返 回 上 一 层      ※\n";
  cout<<"\t\t\t※                              ※\n";
  cout<<"\t\t\t※※※※※※※※※※※※※※※※※\n";
}

void ShopMenu()
{
  cout<<"\t\t\t※※※※※※※※※※※※※※※※※\n";
  cout<<"\t\t\t※                              ※\n";
  cout<<"\t\t\t※****车**间**管**理**系**统****※\n";
  cout<<"\t\t\t※                              ※\n"; 
  cout<<"\t\t\t※       1: 创 建 订 单         ※\n";
  cout<<"\t\t\t※                              ※\n"; 
  cout<<"\t\t\t※       2: 订 单 用 料         ※\n";
  cout<<"\t\t\t※                              ※\n";  
  cout<<"\t\t\t※       0: 返 回 上 层         ※\n";
  cout<<"\t\t\t※                              ※\n";
  cout<<"\t\t\t※※※※※※※※※※※※※※※※※\n";
}

void SortMenu()
{
  cout<<"\t\t\t※※※※※※※※※※※※※※※※※\n";
  cout<<"\t\t\t※                              ※\n";
  cout<<"\t\t\t※******排**序******系**统******※\n";
  cout<<"\t\t\t※                              ※\n"; 
  cout<<"\t\t\t※       1: 价 格 排 序         ※\n";
  cout<<"\t\t\t※                              ※\n"; 
  cout<<"\t\t\t※       2: 用 料 排 序         ※\n";
  cout<<"\t\t\t※                              ※\n";  
  cout<<"\t\t\t※       0: 返 回 上 层         ※\n";
  cout<<"\t\t\t※                              ※\n";
  cout<<"\t\t\t※※※※※※※※※※※※※※※※※\n";
}

/************VC++ 6.0 中getline() 函数的Bug 解决办法**************/

/*
 编辑：C:\Program Files\Microsoft Visual Studio\VC98\Include\string 头文件

else if (_Tr::eq((_E)_C, _D))
   {_Chg = true;
    _I.rdbuf()->snextc();          //这行改成   _I.rdbuf()->sbumpc();           
    break;}
 */

/*****************************完成任务**************************/